package org.seedltd.upms.service.detection;

import java.io.IOException;

import org.seedltd.core.base.BasePage;
import org.seedltd.core.base.IBaseService;
import org.seedltd.upms.model.detection.entity.DetectionTube;
import org.seedltd.upms.model.detection.form.DetectionTubeForm;
import org.seedltd.upms.model.detection.form.DetectionTubeSearchForm;
import org.seedltd.upms.model.detection.vo.DetectionTubeVO;
import org.springframework.web.multipart.MultipartFile;

/**
 * 试剂管维护业务接口
 * 
 * @author laizuan
 * @since 2021/07/31
 * @version 1.0
 */
public interface DetectionTubeService extends IBaseService<DetectionTube> {

    /**
     * 通过主键获取数据
     *
     * @param id
     *            主键
     * @return 数据
     */
    DetectionTubeVO findById(Long id);

    /**
     * 获取试剂管对象
     * @param codeId 二维码主键
     * @return
     */
    DetectionTube findByQrCodeId(Long codeId);

    /**
     * 新增数据
     *
     * @param form
     *            表单数据
     * @return 主键
     */
    Long add(DetectionTubeForm form);

    /**
     * 修改数据
     *
     * @param form
     *            表单数据
     * @return 是否修改成功。 true: 成功，false:失败
     */
    Long update(DetectionTubeForm form, MultipartFile[] file) throws IOException;

    /**
     * 列表查询
     * 
     * @param searchForm
     *            搜索条件
     * @return 列表数据
     */
    BasePage<DetectionTubeVO> page(DetectionTubeSearchForm searchForm);

    /**
     * 批量上传检测报告
     *
     * @param file
     *            压缩文件
     * @return 消息内容
     */
    String uploadReportBatch(MultipartFile file) throws IOException;
}